package com.pxxy.lib_common.base;

import android.app.Application;
import android.content.Context;

import com.alibaba.android.arouter.launcher.ARouter;
import com.pxxy.lib_common.BuildConfig;
import com.pxxy.lib_common.R;
import com.pxxy.lib_common.utils.ActivityCollector;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator;
import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator;
import com.scwang.smartrefresh.layout.api.RefreshFooter;
import com.scwang.smartrefresh.layout.api.RefreshHeader;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.scwang.smartrefresh.layout.header.ClassicsHeader;

import java.util.HashMap;
import java.util.Map;

public class BaseApplication extends Application {
    private static Context context;
    private static Application myApp;
    //用于存放user数据的kay
    private static final String USER_KEY = "user";
    //记录是否登录
    private static boolean isLogin = false;
    //用来存放数据。
    private static Map<String,Object> data;

    //全局一次性设置默认属性和默认Header
    //static 代码段可以防止内存泄露
    static {
        //设置全局的Header构建器
        SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
            @Override
            public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
                layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色
                return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header，默认是 贝塞尔雷达Header
            }
        });
        //设置全局的Footer构建器
        SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
            @Override
            public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
                //指定为经典Footer，默认是 BallPulseFooter
                return new ClassicsFooter(context).setDrawableSize(20);
            }
        });
    }

    @Override
    public void onCreate() {
        super.onCreate();
        //获取上下文
        context = getApplicationContext();
        //获取applicat
        myApp = this;
        //初始化data对象
        data = new HashMap<>();
        //初始化路由
        if (BuildConfig.DEBUG) {           // 这两行必须写在init之前，否则这些配置在init过程中将无效
            ARouter.openLog();     // 打印日志
            ARouter.openDebug();   // 开启调试模式(如果在InstantRun模式下运行，必须开启调试模式！线上版本需要关闭,否则有安全风险)
        }
        ARouter.init(this); // 尽可能早，推荐在Application中初始化
    }

    /**
     * 获取上下文对象
     * @return
     */
    public static Context getContext(){
        return context;
    }

    /**
     * 获取application对象
     * @return
     */
    public static Application getInstance(){
        return  myApp;
    }

    /**
     * 获取User数据
     * @return
     */
    public static Object getUserData(){
        return data.get(USER_KEY);
    }

    /**
     * 设置用户数据
     */
    public static void setUserData(Object object){
        data.put(USER_KEY,object);
    }

    /**
     * 保存数据
     * @param key   键
     * @param value 值
     */
    public static void putData(String key,Object value){
        data.put(key,value);
    }

    /**
     * 取数据
     * @param key   键
     * @return
     */
    public static Object getData(Object key){
        return data.get(key);
    }

    /**
     * 退出App(清除所有activity)
     */
    public static void exitApp(){
        //清除所有activity
        ActivityCollector.finishAll();
    }
}
